package com.yuju.guest.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.yuju.common.PageModel;
import com.yuju.common.core.service.IBaseService;
import com.yuju.order.dao.entity.Reserve;
import com.yuju.order.model.ReserveModel;
import com.yuju.order.model.ReserveRoomModel;
import com.yuju.order.model.RoomOrderModel;
/**
 * 
 * 类名：IReserverService  <br />
 *
 * 功能：
 *
 * @author : sunyl <br />
 * @Date : 2017年11月25日 下午4:45:12  <br />
 * @version : 1.1 <br />
 */
public interface OrderService extends IBaseService<ReserveModel, Reserve, String>{
	/**
	 * 
	 * 功能：<br/>
	 * 新增预订单
	 * @param  model 房间
	 * @param  reserveRoomModelList 房间预订的列表
	 * @author sunyl
	 * @Date 2017年12月4日 下午4:03:47 <br/>
	 */
	String creatReserveOrder(ReserveModel model);
	/**
	 * 功能：<br/>
	 * 	修改预订单
	 * @param  model 房间
	 * @param  reserveRoomModelList 房间预订的列表
	 * @author sunyl
	 * @Date 2017年12月4日 下午6:41:14 <br/>
	 */
	String updateReserveOrder(ReserveModel model);
	/**
	 * 
	 * 功能：<br/>
	 * 取消预定单
	 * @param reserveId
	 * @author sunyl
	 * @Date 2017年12月5日 下午2:15:39 <br/>
	 */
	int cancelReserveOrder(String reserveId);
	/**
	 * 
	 * 功能：<br/>
	 * 恢复预订单
	 * @param reserveId
	 * @author sunyl
	 * @Date 2017年12月5日 下午2:15:43 <br/>
	 */
	int recoverReserveOrder(String reserveId);
	/**
	 * 
	 * 功能：<br/>
	 * 恢复预订单
	 * @param reserveId 预订单id
	 * @param deposit 押金
	 * @author sunyl
	 * @Date 2017年12月5日 下午2:15:43 <br/>
	 */
	int updateReserveOrderForMoney(String reserveId,BigDecimal deposit);
	/**
	 * 通过预定单主键获取预定的房间
	 * 功能：<br/>
	 *
	 * @author sunyl
	 * @Date 2017年12月15日 下午7:40:49 <br/>
	 */
	List<ReserveRoomModel> listReserveRoomModelByReserveId(String reserveId);
	/**
	 * 
	 * 功能：<br/>
	 *  通过reserveId获取预订单的详细信息包含预定的房间信息
	 * @author sunyl
	 * @Date 2017年12月18日 下午8:22:05 <br/>
	 */
	Map<String,Object> getReserveInfoByReserveId(String reserveId);
	/**
	 * 
	 * 功能：<br/>
	 *
	 * @author sunyl
	 * @Date 2017年12月16日 下午1:37:00 <br/>
	 */
	PageModel listInfo(ReserveModel model, Integer currentPage, Integer rows);

	/**
	 * 
	 * 功能：预抵报表<br/>
	 *
	 * @author zhousc
	 * @Date 2017年12月20日 上午10:31:05 <br/>
	 */
	List<ReserveModel> dueToArriveIn(ReserveModel model);
	
	ReserveModel getCurrent(ReserveModel convert);
	public ReserveModel getInfo(ReserveModel model) ;
}
